package huawei_nowcoder;

import java.util.*;

/**
 * @Description: 名字的漂亮程度
 * @Date: 2020/4/27
 * @Author: 许群星
 */
public class NameBeauty {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNext()) {
            int n = sc.nextInt();
            String[] strings = new String[n];
            for (int i = 0; i < n; i++) {
                strings[i] = sc.next();
            }
            //输出
            for (int i = 0; i < n; i++) {
                System.out.println(getBeauty(strings[i]));
            }
        }
    }

    //得到名字的漂亮度
    private static int getBeauty(String strs) {
        //排序取值的时候是根据数量排序的
        Map<Character, Integer> sortMap = new TreeMap<>();
        //放入set，并排序，取值
        for (int j = 0; j < strs.length(); j++) {
            char ch = strs.charAt(j);
            if (sortMap.containsKey(ch)) {
                sortMap.put(ch, sortMap.get(ch) + 1);
            } else {
                sortMap.put(ch, 1);
            }
        }

        List<Map.Entry<Character, Integer>> list = new ArrayList<>(sortMap.entrySet());
        Collections.sort(list, new Comparator<Map.Entry<Character, Integer>>() {
            @Override
            public int compare(Map.Entry<Character, Integer> o1, Map.Entry<Character, Integer> o2) {
                return o1.getValue().compareTo(o2.getValue());
            }
        });

        int n = sortMap.size();
        int x = 26 - n + 1;
        Map<Character, Integer> map = new HashMap<>();
        for (int i = 0; i < list.size(); i++) {
            Map.Entry mp = list.get(i);
            map.put((Character) mp.getKey(), x++);
        }

        int ans = 0;

        for (int j = 0; j < strs.length(); j++) {
            ans += map.get(strs.charAt(j));
        }

        return ans;
    }
}
/*
题目描述
给出一个名字，该名字有26个字符串组成，定义这个字符串的“漂亮度”是其所有字母“漂亮度”的总和。
每个字母都有一个“漂亮度”，范围在1到26之间。没有任何两个字母拥有相同的“漂亮度”。字母忽略大小写。
给出多个名字，计算每个名字最大可能的“漂亮度”。
输入描述:
整数N，后续N个名字

输出描述:
每个名称可能的最大漂亮程度

示例1
输入
复制
2
zhangsan
lisi
输出
复制
192
101
 */